// #ifdef H5
// @ts-ignore
import wx from '../static/SDK/WeChatJsSDK-1.6.0.js'
// #endif


function configWeiXin(appId: string, timestamp: string, nonceStr: string, signature: string, cb: Function) {
  // #ifdef H5
  return new Promise((req, err) => {
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
      appId: appId,
      timestamp: timestamp,
      nonceStr: nonceStr,
      signature: signature,
      jsApiList: ['chooseImage', 'uploadImage', 'downloadImage',
        'previewImage', 'openLocation', 'getLocation',
        'scanQRCode', 'checkJsApi', 'onMenuShareTimeline',
        'onMenuShareAppMessage', 'onMenuShareQQ',
        'onMenuShareWeibo', 'onMenuShareQZone', 'WeixinOpenTagsError'
      ],
      openTagList: ['wx-open-launch-weapp'], // 填入打开小程序的开放标签名wx-open-launch-weapp
    });

    wx.error(function (res: any) {
      err(res)
      console.error(res, 'jsSDK初始化错误');
    });

    wx.ready(function () {
      // 1 判断当前版本是否支持指定 JS 接口，支持批量判断
      wx.hideMenuItems({
        menuList: [
          "menuItem:copyUrl", "menuItem:editTag",
          "menuItem:delete", "menuItem:originPage",
          "menuItem:readMode", "menuItem:openWithQQBrowser",
          "menuItem:openWithSafari", "menuItem:share:email",
          "menuItem:share:brand", "menuItem:share:qq",
          "menuItem:share:QZone", "menuItem:share:appMessage",
          "menuItem:share:timeline"
        ] // 要隐藏的菜单项，只能隐藏“传播类”和“保护类”按钮
      })


      wx.getLocation({
        type: 'gcj02',
        complete(res: any) {
          if (res.errMsg === 'getLocation:ok') {
            cb && cb(res)
            req(res)
          } else if (res.errMsg === 'getLocation:cancel') {
            err(res)
          }
        },
      })
    })
  })

  // #endif
}


// 判断是否微信环境
function is_weixn() {
  let ua = navigator.userAgent.toLowerCase()
  // @ts-ignore
  if (ua.match(/MicroMessenger/i) == 'micromessenger') {
    return true
  } else {
    return false
  };
};
/**
 * 微信版本要求为：7.0.12 及以上
通过上述问题，我们可以修改 is_version 方法，先判断大版本号及第一位大于 7 时直接返回 true ，当等于 7 时，判断第二位是否大于 0，大于 0 直接返回 true，等于 0 时判断第三位是否大于等于 12。代码如下：
 **/
function is_version() {
  const wxInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i); // 微信浏览器信息
  // 微信正常版本号 wxInfo[1] = "8.0.1840" (示例)
  // 微信异常版本号 wxInfo[1] = "8.0.1.1840" (示例)
  //进行split转成数组进行判断 ['8','0','1','1840'] (示例)
  // @ts-ignore
  const version = wxInfo[1].split(".");
  // console.log('version', version);
  // 判断版本在7.0.12及以上的版本
  if (Number(version[0]) > 7) {
    return true;
  } else if (Number(version[0]) === 7) {
    if (Number(version[1]) > 0) {
      return true;
    } else if (Number(version[1]) === 0) {
      if (Number(version[2]) >= 12) return true;
    }
  }
  return false;
}


/**
 * @description: 生成wx-open-launch-weapp
 * @param {Object} info 
 */

/* 
 * @description: info参数
let params={
    ele:"", // 元素ID
    appid:"", // 小程序appid号 
    path:"", // 跳转小程序的页面路径地址 例: pages/home/home.html - (后面必须带上.html后缀 否则IOS跳转时出现小程序页面未配置)
    content:"" // html字符串 例: "<button>点我</button>"
}
*/
export const navigateToMiniProgram = (info: any) => {
  console.log(!is_weixn(), is_version());
  if (!is_weixn()) {
    return
  }
  if (is_version()) {
    const btn: HTMLElement = document.querySelector('#' + info.ele) as HTMLElement; //获取元素
    let width = btn.clientWidth
    let height = btn.clientHeight
    const script = document.createElement("script"); // 创建script内容插槽 避免template标签冲突
    script.type = "text/wxtag-template"; // 使用script插槽 必须定义这个type
    script.text = info.content // 自定义的html字符串内容
    const html = `<wx-open-launch-weapp
						id="launch-btn" 
		                style="width:${width}px;height:${height}px;display:block;" 
						appid="${info.appid}" 
		                path="${info.path}">${script.outerHTML}</wx-open-launch-weapp>`;
    btn.innerHTML = html; // html字符串赋值
    console.log(btn, "99");
  } else {
    // alert("您的版本号不支持")
    console.log('您的版本号不支持');
  }
}




export const WeiXinLocation = configWeiXin;